Documentation
 
Basic
     Introduction
   FAQ
   Troubleshooting
   How WhiteCap Works
   License Agreement
   Contact

 
Advanced
     Standalone Use
   Customizing
   Scripting
   Config Programming
   Version History

  Config Programming  
 

      Please visit www.soundspectrum.com to learn more about the standard versoin of WhiteCap and all of the options available for programming your own configs!

      A "config" is a file that contains plain-text data intended to be read-in by WhiteCap. Configs contain a non-ordered list of named strings, similar to a Windows INI file and can be viewed or edited by using any text editor. Depending on the role a config file is intended to play, WhiteCap looks for specifically named items and uses them in accordance with the role of that config. For example, when a WaveShape config defines a string named "Pen", it's understood that the string paired to it defines how darkly lines are drawn. If you want to learn the config file syntax, it will help to have some familiarity with programming and/or script writing. Many users submit their configs so that they can be redistributed—over half of the configs that come with WhiteCap and WhiteCap were made by users just like you.

Syntax
The config file syntax is straightforward and is nothing more than a flat, non-ordered, list of key-value pairs (ie, a dictionary). It's an ASCII plain-text file (ie, not any other kind of file, such as an RTF file), with 1 to 4 character case-sensitive "key" identifiers followed by an equal sign, followed by the key's value. If the value isn't a number (a leading '-' and/or '.' is ok), then it should be in quotes. All whitespace outside of quotes is ignored, and both kinds of C-style comments are processed. An example of valid syntax:
X0=".5 + sin( .3 * t )"          // This is a comment
Y0="123"
Pen=.8
Ans=-42
ALFA="1 / exp( c1 ^ 2 )"      /* This is another comment */
Vers=260
Submitting Your Configs
If you'd like a config you made yourself to permanently become part of WhiteCap, please contact us. From there, it'll be evaluated and checked for possible problems or faults. If you choose to redistribute your configs on your own and do something hazardous in them, you may cause other versions of WhiteCap to crash or have other problems. Further, sending in your configs centralizes the entire process, guaranteeing your work to appear as soon as possible.
Documented Configs
If you download the standard version of WhiteCap from www.soundspectrum.com, you will be able to access several documented configs that come with WhiteCap.
Be Patient
Don't get discouraged if the math seems like a lot. It's simply a matter of experience and it'll come much easier with just a little time—like riding a bike. As you explore existing configs, you may want to try using a graphing calculator to help see how a certain equations behave. A common way to learn config programming is to alter existing configs and observe the effects of your changes.
Testing Your Configs
When you're ready to test your config, you have to tell WhiteCap to load a fresh copy it from the disk. Otherwise, if you switch to a config you've been editing, WhiteCap won't load your changes (because it's using a cached copy). The 'U' key will reload the currently displayed configs. In other words, when you save changes to a config, press 'U' to make WhiteCap load a fresh copy from disk.
Config/Language Reference
Common
(All angles are in radians)

abs() absolute value
exp() e to the x
log() natural logarithm
sqr() square
sqrt() square root
sin() sine
cos() cosine
tan() tangent
asin() arcsine (-PI/2 to PI/2)
acos() arccosine (0 to PI)
atan() arctangent (-PI/2 to PI/2)
atan2() arctangent (0 to PI)


Logical/Discrete

pos(x) x if x > 0 and 0 otherwise
sgn(x) 1 if x > 0 and -1 otherwise
clip(x) 0 when x < 0, 1 when x > 1, and x when 0 <= x <= 1
sqwv(x) 1 if abs(x) <= 1.0 and 0 otherwise


Miscellaneous

rnd(x) a random real number from 0 to x
trnc(x) everything to the right of the decimal point in x is dropped
flor(x) the largest integer that is also less than x (ex, flor(3.2) == 3, flor(-2.7) == -3 )
wrap(x) x - flor( x ) (ex: wrap( .3 ) == .3, wrap( 4.12 ) == .12, wrap( - 2.7 ) == .3 )
flip(x) sawtooth that passes thru ...(-3, -1), (-1, 1), (-1, -1), (1,1), (1, -1), ...
trwv(x) triangle-shaped wave that passes through (0,0), (1,1), (2,0) and repeats in both directions along the x axis
seed(x) seeds the random number generator based on the bits of x, returns x


Operators

+ - Add/Subtract
* / Multiply/Divide
% Modulo or "the integer remainder when A is divided by B" (ex, 8 % 4 == 0, 11 % 3 == 2)
^ raised to the power


Audio Access

fft() Accesses the frequency transform/spectrum of the current audio
BASS A single scalar value that approximates the overall beat


Globals

PI 3.141592653
NUM_S_STEPS The number of times the X, Y, and C expressions are evaluated per sample (ie, per frame)
NUM_FFT_BINS The number of bins/resolution composing fft()
 
 
 
 

© 2004 SoundSpectrum, Inc.